<?php
class commonMod
{
	public $model;//数据库模型对象
	public $tpl;//模板对象
	public $config;//全局配置
	static $global;//静态变量，用来实现单例模式
	public function __construct()
	{	
		//实例化数据库模型和模板	
		if(!isset(self::$global['config']))
		{
			global $config;
			session_start();//开启session
			$this->config=self::$global['config']=$config;//配置
			$this->model=self::$global['model']=new cpModel($this->config);//实例化数据库模型类
			$this->config['TPL_TEMPLATE_PATH']='./template/';			
		    $this->tpl=self::$global['tpl']=new cpTemplate($this->config);//实例化模板类
			
			
			
			//语言包目录
			Lang::init($config);
			
			//权限验证
			//登录页面地址
			$config['AUTH_LOGIN_URL']=__APP__.'/index/login.html';
			//不需要登录的模块或操作，比如登录页面和验证码显示页面
			$config['AUTH_LOGIN_NO']=array('index'=> array('login','verify'));
			//是否缓存权限信息，设置false,每次从数据库读取，开发时建议设置为false
			$config['AUTH_POWER_CACHE']=false;
			//自动创建数据库表，自动插入模块数据，发布时，可以去掉
			//Auth::getModule($this->model,$config);
			Auth::check($this->model,$config);//检查是否登录	
		}
		else
		{   //使用module()函数调用的时候生效
			$this->config=self::$global['config'];//配置
			$this->model=self::$global['model'];//数据库模型对象
			$this->tpl=self::$global['tpl'];//模板类对象
		}		
	}
	
	//模板变量解析
	protected function assign($name, $value)
	{
		return $this->tpl->assign($name, $value);
	}
	
	//模板输出
	protected function display($tpl='')
	{	
		$this->tpl->assign('Seocms',"HTTP://".$_SERVER['SERVER_NAME']);
		return $this->tpl->display($tpl);	
	}
	
	//设置表名
	protected function table($table,$ignore_prefix=false)
	{
		return $this->model->table($table,$ignore_prefix);
	}
		
	//直接跳转
	protected function redirect($url,$code=301)
	{
		header('location:'.$url,false,$code);
		exit;
	}
	
	//操作成功之后跳转,默认三秒钟跳转
	protected function success($msg,$url=NULL,$waitSecond=3)
	{
		if($url==NULL)
		{
			$url=__URL__;
			}
		else
		{
			$url=__URL__.$url;
			}
		$this->assign('message',$msg);
		$this->assign('url',$url);
		$this->assign('waitSecond',$waitSecond);
		$this->display('success');
		exit;
	}
	
	//出错之后跳转，后退到前一页
	protected function error($msg)
	{
		$this->assign('message',$msg);
		$this->display('error');
		exit;
	}
	//判断是否是post提交
	protected function isPost()
	{
		return $_SERVER['REQUEST_METHOD']=='POST';
	
	}
	
	//修改配置的函数 
	public function set_config($array,$config_file='./../config.php')
	{
		 if(empty($array)||!is_array($array))
		 {
			 return false;
		 }
	
		 $config = file_get_contents($config_file);//读取配置
		 foreach($array as $name=>$value)
		 { 
			$name=str_replace(array("'",'"','['),array("\\'",'\"','\['),$name);//转义特殊字符，再传给正则替换
			if(is_string($value)&&!in_array($value,array('true','false','3306')))
			{
				$value="'".$value."'";//如果是字符串，加上单引号
			}
			$config=preg_replace("/(\\$".$name.")\s*=\s*(.*?);/i", "$1={$value};", $config);//查找替换
		 }
		//写入配置
		if(file_put_contents($config_file,$config))
		return true;
		else 
		return false; 
	}

	//分页 $url:基准网址，$totalRows: $listRows列表每页显示行数$rollPage 分页栏每页显示的页数
	protected  function  page($url,$totalRows,$listRows=10,$rollPage=5)
	{
		require_once(CP_PATH.'lib/Page.class.php');
		$page=new page();
		return $page->show($url,$totalRows,$listRows,$rollPage);
	}
	
	
	//获取前台配置
    public function getconfig($name=null)
    {
        require('../config.php'); 
        if(empty($name))
		{
        	return $config;
        }else
		{
       	 	return $config[$name];
        }
    }
}
?>